Ruby 日記 38日目: トップレベルのクラスを参照する
次のプログラムを実行するとどうなりますか
code:gold/ex38/main.rb
class C
CONST = "Good, night"
end
module M
CONST = "Good, evening"
end
module M
class C
CONST = "Hello, world"
end
end
module M
class ::C
p CONST
end
end
選択肢:
例外が発生する
"Good, night"と表示される
"Good, evening"と表示される
"Hello, world"と表示される
解説:
code:rb
module M
class ::C
p CONST
end
end
に関しては、クラス定義の先頭にクラスセパレータ :: が使われているので、トップレベルのCクラスを参照するよ。 これ確か Object::C と同じ意味になるんだったよね。
なので「"Good, night"と表示される」が正解。
code:sh
# ruby gold/ex38/main.rb
"Good, night"